Skip to content

Maven: infer pom packaging when cached BOM lacks explicit <packaging>#7536

Open
Jammy-Louie wants to merge 1 commit intomainfrom
fix/maven-bom-without-explicit-pom-packaging
Open

Maven: infer pom packaging when cached BOM lacks explicit <packaging>#7536
Jammy-Louie wants to merge 1 commit intomainfrom
fix/maven-bom-without-explicit-pom-packaging

Conversation

@Jammy-Louie
Copy link
Copy Markdown
Contributor

What's changed?

When a cached POM in the local Maven repository declares no <packaging> and has no JAR file alongside it, infer pom packaging if the POM has a non-empty <dependencyManagement>. This makes BOMs whose <packaging>pom</packaging> element is missing (e.g. stripped by a proxy or mirror during caching) resolve from the local cache instead of being silently discarded.

What's your motivation?

Reported case: org.jooq:jooq-bom:3.20.10 was present in ~/.m2 but its cached POM lacked <packaging>pom</packaging>. OpenRewrite silently skipped the entry and fell through to a remote.

Anything in particular you'd like reviewers to focus on?

The gating condition !jarFileExists && !pom.getDependencyManagement().isEmpty(), chosen so that the inference only fires for POMs with an unmistakable BOM signal. A jar artifact that omits <packaging> (relying on Maven's jar default) and happens to have a missing local JAR will not be misidentified, since jar artifacts essentially never declare <dependencyManagement>.

Anyone you would like to review specifically?

Have you considered any alternatives or workarounds?

  • Workaround: manually add <packaging>pom</packaging> to the cached POM file. Works per-artifact but doesn't generalize.

Checklist

  • I've added unit tests to cover both positive and negative cases
  • I've read and applied the recipe conventions and best practices
  • I've used the IntelliJ IDEA auto-formatter on affected files

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

2 participants